package pruebas;

import junit.framework.TestCase;
import modelo.*;
import modelo.moviles.balas.BalaLaser;
import modelo.moviles.naves.AvionCivil;
import modelo.moviles.naves.Explorador;
import modelo.moviles.naves.Helicoptero;
import modelo.moviles.naves.Nave;

public class TestNave extends TestCase{
	
	/* "testea la nave AvionCivil " */
	public void testAvionCivil(){
		
		Nivel nivel = new Nivel (10 , 12); 
		Nave nave = new AvionCivil (nivel);
	
		nave.destruirse();
		assertFalse("La nave no se destruyo",nave.noEstallo());
	
		/* "Creamos un nuevo AvionCivil" */
		nave = new AvionCivil(nivel);
	
		/* "Al recibir una bala, como su energia es menor debe destruirse y devolver el puntaje." */
		nave.recibirBala(new BalaLaser(nivel));
	
		assertTrue("La nave no se debe destruir estando sin energia", nave.debeDestruirse());
	}

		/* "testea la nave Explorador " */
	public void testExplorador(){
		
		Nivel nivel = new Nivel(10,12); 
		Nave nave = new Explorador(nivel);
			
		nave.destruirse();
		assertFalse("La nave no se destruyo",nave.noEstallo());
	
		/* "Creamos un nuevo Explorador" */
		nave = new Explorador(nivel);
	
		/* "El Explorador recibe una bala de tipo Laser" */
		nave.recibirBala(new BalaLaser(nivel));
	
		/* "Al recibir la segunda bala, 
		 * como su energia es menor debe destruirse y devolver el puntaje." */
		nave.recibirBala(new BalaLaser(nivel));
		assertTrue("La nave no responde ante las balas recibidas",nave.debeDestruirse());
	}
	
	/* "testea la nave Helicoptero " */
	public void testHelicoptero(){
		
		Nivel nivel = new Nivel (10,12); 
		Nave nave = new Helicoptero(nivel);
	
		nave.destruirse();
		assertFalse("La nave no se destruyo",nave.noEstallo());
	
		/* "Creamos un nuevo Helicoptero" */
		nave = new Helicoptero(nivel);
		
		/* "Al recibir una bala, 
		 * como su energia es menor debe destruirse y devolver el puntaje." */
		nave.recibirBala(new BalaLaser(nivel));
		assertTrue("La nave no responde ante las balas recibidas",nave.debeDestruirse());
	}	

}
